package com.e2a.examenenligne.entities;

import javax.persistence.DiscriminatorColumn;
import javax.persistence.DiscriminatorType;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
//vue qu'on a deja une colonne de reference sur la table des Statuts, alors pourquoi introduire de la redandonce
//en ajoutant une DiscriminatorColumn différente, vaut mieux utiliser celle générer automatiquement par l'association Utilisateur-->Statut
//c'est pourquoi on a donné comme nom "STATUT_ID" à l'attribut name de l'annotation @DiscriminatorColumn
@DiscriminatorColumn(name="STATUT_ID", discriminatorType = DiscriminatorType.INTEGER )
//a ce stade il faut veiller a donner les valeurs exactes des id représentant les stauts dans la table Statut
@DiscriminatorValue("1")
@NamedQueries({
	@NamedQuery(name="findAllUsers",query="select U from Utilisateur U"),
	@NamedQuery(name="findUserById",query="select U from Utilisateur U where U.id=:id"),
	@NamedQuery(name="verifyUser",query="select U from Utilisateur U where U.login= :login AND  U.motDePasse= :motdepasse"),
	@NamedQuery(name="verifyLogin",query="select U from Utilisateur U where U.login= :login"),
    
})

public class Utilisateur {
	
	private int id;
	private String nom;
	private String prenom;
	private String login;
	private String motDePasse;
	private Statut statut;
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}
	
	public void setId(int id) {
		this.id = id;
	}
	
	
	public String getNom() {
		return nom;
	}
	
	
	public void setNom(String nom) {
		this.nom = nom;
	}
	
	
	public String getPrenom() {
		return prenom;
	}
	public void setPrenom(String prenom) {
		this.prenom = prenom;
	}
	
	
	public String getMotDePasse() {
		return motDePasse;
	}
	
	
	public void setMotDePasse(String motDePasse) {
		this.motDePasse = motDePasse;
	}
	
	
	
    
	public Statut getStatut() {
		return statut;
	}

	public void setStatut(Statut statut) {
		this.statut = statut;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}
  
	
	
}
